package nc.pubitf.bd.feature.fclass;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import nc.ui.pub.bill.BillItem;
import nc.vo.bd.feature.fclass.entity.AggFclassVO;
import nc.vo.bd.feature.fclass.entity.FclassBodyVO;
import nc.vo.bd.feature.fclass.entity.FclassHeadVO;
import nc.vo.bd.feature.fclass.entity.FclassRelationVO;
import nc.vo.bd.feature.feature.entity.FeatureHeadVO;
import nc.vo.bd.feature.ffile.entity.AggFFileVO;
import nc.vo.bd.feature.ffile.entity.FFileBodyVO;
import nc.vo.bd.feature.fselect.entity.FeatrueParamVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pubapp.pattern.pub.MapList;
import nc.vo.so.m30.entity.SaleOrderBVO;

public abstract interface IPubFclassService {
	public abstract FclassRelationVO queryRelationVO(String paramString)
			throws BusinessException;

	public abstract MapList<String, String> queryAllSubFeatures(
			String paramString) throws BusinessException;

	public abstract MapList<String, String> queryAllSubEnableFeatures(
			String paramString) throws BusinessException;

	public abstract MapList<String, String> querySubFeatures(String paramString)
			throws BusinessException;

	public abstract HashMap<String, UFBoolean> queryAllSubFeaturesAndBrequired(
			String paramString) throws BusinessException;

	public abstract FeatureHeadVO[] queryAllSubFeatureHeadVOs(String paramString)
			throws BusinessException;

	public abstract Map<String, String> queryAllFclass(String paramString)
			throws BusinessException;

	public abstract FclassHeadVO[] queryAllSubFclassHeadVOs(String paramString)
			throws BusinessException;

	public abstract FclassHeadVO[] queryFclassHeadVOs(
			String[] paramArrayOfString) throws BusinessException;

	public abstract AggFFileVO getAggVO(FeatrueParamVO paramFeatrueParamVO,
			UFBoolean paramUFBoolean) throws BusinessException;

	public abstract void queryFclassBodys(String[] paramArrayOfString,
			List<FclassBodyVO> paramList, Set<String> paramSet);

	public abstract List<AggFclassVO> queryAllAggVO(String paramString);

	public abstract AggFclassVO[] queryAggVO(String paramString);

	public abstract MapList<AggFclassVO, String> getTreeMapList(
			String paramString);
	
	public abstract Map<String,String> getFeatureClassPKAndValueMap();
	
	public FFileBodyVO[] queryFFileBodyVOByBodyId(String[] ids)throws BusinessException;
	
	public List<FFileBodyVO> getFeatureShowValueByMaterialAndFFileCode(String pk_material,String cffileid);
	
	public List<FFileBodyVO> getFeatureShowValueByMaterialAndFileCode(String pk_material,String code_ffileid);
	
	public List<String> getFeatureClassNameAndValue(String pk_material,String cffileid);
	
	public List<String> getFeatureClassNameAndValueByOrderBodyId(String pk_material,String cffileid);
	
	public abstract Map<String,String> updateSaleOrderBodyVDefByBodys(SaleOrderBVO[] vos,String vdef) throws BusinessException;
	
	public abstract Map<String,String> getBodyFeaturedescByByBodys(SaleOrderBVO[] vos) throws BusinessException;
	
	public abstract Map<String,String> getBodyFeaturedesc2ByByBodys(SaleOrderBVO[] vos) throws BusinessException;
	
	public abstract void fixFeatureSelectLost(List<SaleOrderBVO> listSOBVos) throws BusinessException;
	
	public abstract  Map<String,String> getFeatureClassIDAndNameMap();
	
	public abstract Map<String,String> getFeatureClassByGroupAndMaterial(String pk_group,String pk_material);
	
	public abstract List<Map<String, String>> getRelationMapByFeaClsAndGroup (String pk_group,String featureclass,String code);
	
	public abstract int doFeatureCache(String pk_userid,Map<String,String>  map,String pk_material,String materialname,String materialcode,String featuredesc,String crowno);
	
	public abstract Map<String,String> readFeatureCache(String pk_userid,String pk_material,String crowno);
	
	public abstract String getFclassPkByCode(String code);
	
	public abstract String getFeaturePkByCode(String code);
	
	public abstract String getNPriceByCondition(String cmaterialid,String cmaterialvid,String cfeatureid,String cfeaturebid);
	
	public abstract Map<String,String> getFeatureClassRequiredCode();
}
